Hệ thống quản lý phòng khám trực tuyến bằng PHP

1 RegExp.escape=function(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,'\\$&');};(function(undefined){'use strict';var $;if(typeof jQuery!=='undefined'&&jQuery){$=jQuery;}else{$={};}
2 $.csv={defaults:{separator:
',',delimiter:'"',headers:true},hooks:{castToScalar:function(value,state){var hasDot=/\./;if(isNaN(value)){return value;}else{if(hasDot.test(value)){return parseFloat(value);}else{var integer=parseInt(value);if(isNaN(integer)){return null;}else{return integer;}}}}},parsers:{parse:function(csv,options){var separator=options.separator;var delimiter=options.delimiter;if(!options.state.rowNum){options.state.rowNum=1;}
3 if
(!options.state.colNum){options.state.colNum=1;}
4 var
data=[];var entry=[];var state=0;var value='';var exit=false;function endOfEntry(){state=0;value='';if(options.start&&options.state.rowNum<options.start){entry=[];options.state.rowNum++;options.state.colNum=1;return;}
5 if
(options.onParseEntry===undefined){data.push(entry);}else{var hookVal=options.onParseEntry(entry,options.state);if(hookVal!==false){data.push(hookVal);}}
6 entry=[];
if(options.end&&options.state.rowNum>=options.end){exit=true;}
7 options.state.rowNum++;options.state.colNum=
1;}
8 function endOfValue(){
if(options.onParseValue===undefined){entry.push(value);}else{var hook=options.onParseValue(value,options.state);if(hook!==false){entry.push(hook);}}
9 value
='';state=0;options.state.colNum++;}
10 var
escSeparator=RegExp.escape(separator);var escDelimiter=RegExp.escape(delimiter);var match=/(D|S|\r\n|\n|\r|[^DS\r\n]+)/;var matchSrc=match.source;matchSrc=matchSrc.replace(/S/g,escSeparator);matchSrc=matchSrc.replace(/D/g,escDelimiter);match=new RegExp(matchSrc,'gm');csv.replace(match,function(m0){if(exit){return;}
11 switch
(state){case 0:if(m0===separator){value+='';endOfValue();break;}
12 if
(m0===delimiter){state=1;break;}
13 if
(/^(\r\n|\n|\r)$/.test(m0)){endOfValue();endOfEntry();break;}
14 value
+=m0;state=3;break;case 1:if(m0===delimiter){state=2;break;}
15 value
+=m0;state=1;break;case 2:if(m0===delimiter){value+=m0;state=1;break;}
16 if
(m0===separator){endOfValue();break;}
17 if
(/^(\r\n|\n|\r)$/.test(m0)){endOfValue();endOfEntry();break;}
18 throw
new Error('CSVDataError: Illegal State [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');case 3:if(m0===separator){endOfValue();break;}
19 if
(/^(\r\n|\n|\r)$/.test(m0)){endOfValue();endOfEntry();break;}
20 if
(m0===delimiter){throw new Error('CSVDataError: Illegal Quote [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');}
21 throw
new Error('CSVDataError: Illegal Data [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');default:throw new Error('CSVDataError: Unknown State [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');}});if(entry.length!==0){endOfValue();endOfEntry();}
22 return
data;},splitLines:function(csv,options){var separator=options.separator;var delimiter=options.delimiter;if(!options.state.rowNum){options.state.rowNum=1;}
23 var
entries=[];var state=0;var entry='';var exit=false;function endOfLine(){state=0;if(options.start&&options.state.rowNum<options.start){entry='';options.state.rowNum++;return;}
24 if
(options.onParseEntry===undefined){entries.push(entry);}else{var hookVal=options.onParseEntry(entry,options.state);if(hookVal!==false){entries.push(hookVal);}}
25 entry=
'';if(options.end&&options.state.rowNum>=options.end){exit=true;}
26 options.state.rowNum++;}

27 var
escSeparator=RegExp.escape(separator);var escDelimiter=RegExp.escape(delimiter);var match=/(D|S|\n|\r|[^DS\r\n]+)/;var matchSrc=match.source;matchSrc=matchSrc.replace(/S/g,escSeparator);matchSrc=matchSrc.replace(/D/g,escDelimiter);match=new RegExp(matchSrc,'gm');csv.replace(match,function(m0){if(exit){return;}
28 switch
(state){case 0:if(m0===separator){entry+=m0;state=0;break;}
29 if
(m0===delimiter){entry+=m0;state=1;break;}
30 if
(m0==='\n'){endOfLine();break;}
31 if
(/^\r$/.test(m0)){break;}
32 entry+=m0;state=
3;break;case 1:if(m0===delimiter){entry+=m0;state=2;break;}
33 entry+=m0;state=
1;break;case 2:var prevChar=entry.substr(entry.length-1);if(m0===delimiter&&prevChar===delimiter){entry+=m0;state=1;break;}
34 if
(m0===separator){entry+=m0;state=0;break;}
35 if
(m0==='\n'){endOfLine();break;}
36 if
(m0==='\r'){break;}
37 throw
new Error('CSVDataError: Illegal state [Row:'+options.state.rowNum+']');case 3:if(m0===separator){entry+=m0;state=0;break;}
38 if
(m0==='\n'){endOfLine();break;}
39 if
(m0==='\r'){break;}
40 if
(m0===delimiter){throw new Error('CSVDataError: Illegal quote [Row:'+options.state.rowNum+']');}
41 throw
new Error('CSVDataError: Illegal state [Row:'+options.state.rowNum+']');default:throw new Error('CSVDataError: Unknown state [Row:'+options.state.rowNum+']');}});if(entry!==''){endOfLine();}
42 return
entries;},parseEntry:function(csv,options){var separator=options.separator;var delimiter=options.delimiter;if(!options.state.rowNum){options.state.rowNum=1;}
43 if
(!options.state.colNum){options.state.colNum=1;}
44 var
entry=[];var state=0;var value='';function endOfValue(){if(options.onParseValue===undefined){entry.push(value);}else{var hook=options.onParseValue(value,options.state);if(hook!==false){entry.push(hook);}}
45 value
='';state=0;options.state.colNum++;}
46 if
(!options.match){var escSeparator=RegExp.escape(separator);var escDelimiter=RegExp.escape(delimiter);var match=/(D|S|\n|\r|[^DS\r\n]+)/;var matchSrc=match.source;matchSrc=matchSrc.replace(/S/g,escSeparator);matchSrc=matchSrc.replace(/D/g,escDelimiter);options.match=new RegExp(matchSrc,'gm');}
47 csv.replace(options.match,function(m0){
switch(state){case 0:if(m0===separator){value+='';endOfValue();break;}
48 if
(m0===delimiter){state=1;break;}
49 if
(m0==='\n'||m0==='\r'){break;}
50 value
+=m0;state=3;break;case 1:if(m0===delimiter){state=2;break;}
51 value
+=m0;state=1;break;case 2:if(m0===delimiter){value+=m0;state=1;break;}
52 if
(m0===separator){endOfValue();break;}
53 if
(m0==='\n'||m0==='\r'){break;}
54 throw
new Error('CSVDataError: Illegal State [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');case 3:if(m0===separator){endOfValue();break;}
55 if
(m0==='\n'||m0==='\r'){break;}
56 if
(m0===delimiter){throw new Error('CSVDataError: Illegal Quote [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');}
57 throw
new Error('CSVDataError: Illegal Data [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');default:throw new Error('CSVDataError: Unknown State [Row:'+options.state.rowNum+'][Col:'+options.state.colNum+']');}});endOfValue();return entry;}},helpers:{collectPropertyNames:function(objects){var o,propName,props=[];for(o in objects){for(propName in objects[o]){if((objects[o].hasOwnProperty(propName))&&(props.indexOf(propName)<0)&&(typeof objects[o][propName]!=='function')){props.push(propName);}}}
58 return
props;}},toArray:function(csv,options,callback){options=(options!==undefined?options:{});var config={};config.callback=((callback!==undefined&&typeof(callback)==='function')?callback:false);config.separator='separator'in options?options.separator:$.csv.defaults.separator;config.delimiter='delimiter'in options?options.delimiter:$.csv.defaults.delimiter;var state=(options.state!==undefined?options.state:{});options={delimiter:config.delimiter,separator:config.separator,onParseEntry:options.onParseEntry,onParseValue:options.onParseValue,state:state};var entry=$.csv.parsers.parseEntry(csv,options);if(!config.callback){return entry;}else{config.callback('',entry);}},toArrays:function(csv,options,callback){options=(options!==undefined?options:{});var config={};config.callback=((callback!==undefined&&typeof(callback)==='function')?callback:false);config.separator='separator'in options?options.separator:$.csv.defaults.separator;config.delimiter='delimiter'in options?options.delimiter:$.csv.defaults.delimiter;var data=[];options={delimiter:config.delimiter,separator:config.separator,onPreParse:options.onPreParse,onParseEntry:options.onParseEntry,onParseValue:options.onParseValue,onPostParse:options.onPostParse,start:options.start,end:options.end,state:{rowNum:1,colNum:1}};if(options.onPreParse!==undefined){options.onPreParse(csv,options.state);}
59 data=$.csv.parsers.parse(csv,options);
if(options.onPostParse!==undefined){options.onPostParse(data,options.state);}
60 if
(!config.callback){return data;}else{config.callback('',data);}},toObjects:function(csv,options,callback){options=(options!==undefined?options:{});var config={};config.callback=((callback!==undefined&&typeof(callback)==='function')?callback:false);config.separator='separator'in options?options.separator:$.csv.defaults.separator;config.delimiter='delimiter'in options?options.delimiter:$.csv.defaults.delimiter;config.headers='headers'in options?options.headers:$.csv.defaults.headers;options.start='start'in options?options.start:1;if(config.headers){options.start++;}
61 if
(options.end&&config.headers){options.end++;}
62 var
lines=[];var data=[];options={delimiter:config.delimiter,separator:config.separator,onPreParse:options.onPreParse,onParseEntry:options.onParseEntry,onParseValue:options.onParseValue,onPostParse:options.onPostParse,start:options.start,end:options.end,state:{rowNum:1,colNum:1},match:false,transform:options.transform};var headerOptions={delimiter:config.delimiter,separator:config.separator,start:1,end:1,state:{rowNum:1,colNum:1}};if(options.onPreParse!==undefined){options.onPreParse(csv,options.state);}
63 var
headerLine=$.csv.parsers.splitLines(csv,headerOptions);var headers=$.csv.toArray(headerLine[0],options);lines=$.csv.parsers.splitLines(csv,options);options.state.colNum=1;if(headers){options.state.rowNum=2;}else{options.state.rowNum=1;}
64 for
(var i=0,len=lines.length;i<len;i++){var entry=$.csv.toArray(lines[i],options);var object={};for(var j=0;j<headers.length;j++){object[headers[j]]=entry[j];}
65 if
(options.transform!==undefined){data.push(options.transform.call(undefined,object));}else{data.push(object);}
66 options.state.rowNum++;}

67 if
(options.onPostParse!==undefined){options.onPostParse(data,options.state);}
68 if
(!config.callback){return data;}else{config.callback('',data);}},fromArrays:function(arrays,options,callback){options=(options!==undefined?options:{});var config={};config.callback=((callback!==undefined&&typeof(callback)==='function')?callback:false);config.separator='separator'in options?options.separator:$.csv.defaults.separator;config.delimiter='delimiter'in options?options.delimiter:$.csv.defaults.delimiter;var output='',line,lineValues,i,j;for(i=0;i<arrays.length;i++){line=arrays[i];lineValues=[];for(j=0;j<line.length;j++){var strValue=(line[j]===undefined||line[j]===null)?'':line[j].toString();if(strValue.indexOf(config.delimiter)>-1){strValue=strValue.replace(config.delimiter,config.delimiter+config.delimiter);}
69 var
escMatcher='\n|\r|S|D';escMatcher=escMatcher.replace('S',config.separator);escMatcher=escMatcher.replace('D',config.delimiter);if(strValue.search(escMatcher)>-1){strValue=config.delimiter+strValue+config.delimiter;}
70 lineValues.push(strValue);}
71 output+=lineValues.
join(config.separator)+'\r\n';}
72 if
(!config.callback){return output;}else{config.callback('',output);}},fromObjects:function(objects,options,callback){options=(options!==undefined?options:{});var config={};config.callback=((callback!==undefined&&typeof(callback)==='function')?callback:false);config.separator='separator'in options?options.separator:$.csv.defaults.separator;config.delimiter='delimiter'in options?options.delimiter:$.csv.defaults.delimiter;config.headers='headers'in options?options.headers:$.csv.defaults.headers;config.sortOrder='sortOrder'in options?options.sortOrder:'declare';config.manualOrder='manualOrder'in options?options.manualOrder:[];config.transform=options.transform;if(typeof config.manualOrder==='string'){config.manualOrder=$.csv.toArray(config.manualOrder,config);}
73 if
(config.transform!==undefined){var origObjects=objects;objects=[];var i;for(i=0;i<origObjects.length;i++){objects.push(config.transform.call(undefined,origObjects[i]));}}
74 var
props=$.csv.helpers.collectPropertyNames(objects);if(config.sortOrder==='alpha'){props.sort();}
75 if
(config.manualOrder.length>0){var propsManual=[].concat(config.manualOrder);var p;for(p=0;p<props.length;p++){if(propsManual.indexOf(props[p])<0){propsManual.push(props[p]);}}
76 props=propsManual;}

77 var
o,p,line,output=[],propName;if(config.headers){output.push(props);}
78 for
(o=0;o<objects.length;o++){line=[];for(p=0;p<props.length;p++){propName=props[p];if(propName in objects[o]&&typeof objects[o][propName]!=='function'){line.push(objects[o][propName]);}else{line.push('');}}
79 output.push(line);}

80 return
$.csv.fromArrays(output,options,config.callback);}};$.csvEntry2Array=$.csv.toArray;$.csv2Array=$.csv.toArrays;$.csv2Dictionary=$.csv.toObjects;if(typeof module!=='undefined'&&module.exports){module.exports=$.csv;}}).call(this);


Gõ tìm kiếm nhanh...